package com.msxt.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.msxt.dto.MinsukefangEntity;
import com.msxt.mapper.MinsukefangDao;
import com.msxt.result.Query;
import com.msxt.service.MinsukefangService;
import com.msxt.utils.PageUtils;
import com.msxt.view.MinsukefangView;
import com.msxt.vo.MinsukefangVO;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * 民宿客房服务实现类
 */
@Service("minsukefangService")
public class MinsukefangServiceImpl extends ServiceImpl<MinsukefangDao, MinsukefangEntity> implements MinsukefangService {

	/**
	 * 分页查询民宿客房信息
	 * @param params 查询参数
	 * @return 分页结果
	 */
	@Override
	public PageUtils queryPage(Map<String, Object> params) {
		QueryWrapper<MinsukefangEntity> wrapper = new QueryWrapper<>();

		// 处理排序
		if (params.containsKey("sort") && params.containsKey("order")) {
			String sort = params.get("sort").toString();
			boolean isAsc = "asc".equalsIgnoreCase(params.get("order").toString());
			wrapper.orderBy(true, isAsc, sort);
		}

		// 处理查询条件
		if (params.containsKey("minsumingcheng")) {
			wrapper.like("minsumingcheng", params.get("minsumingcheng"));
		}
		// 添加其他字段的条件...

		Page<MinsukefangEntity> page = new Page<>(
				Long.parseLong(params.getOrDefault("page", "1").toString()),
				Long.parseLong(params.getOrDefault("limit", "10").toString())
		);

		IPage<MinsukefangEntity> result = baseMapper.selectPage(page, wrapper);
		return new PageUtils(result);
	}

	/**
	 * 带条件分页查询民宿客房信息
	 * @param params 查询参数
	 * @param wrapper 查询条件
	 * @return 分页结果
	 */
	@Override
	public PageUtils queryPage(Map<String, Object> params, QueryWrapper<MinsukefangEntity> wrapper) {
		// 处理分页参数
		long pageNum = Long.parseLong(params.getOrDefault("page", "1").toString());
		long pageSize = Long.parseLong(params.getOrDefault("limit", "10").toString());

		// 处理排序
		if (params.containsKey("sort") && params.containsKey("order")) {
			String sort = params.get("sort").toString();
			boolean isAsc = "asc".equalsIgnoreCase(params.get("order").toString());
			wrapper.orderBy(true, isAsc, sort);
		}

		Page<MinsukefangView> page = new Page<>(pageNum, pageSize);
		IPage<MinsukefangView> result = baseMapper.selectPageView(page, wrapper);
		return new PageUtils(result);
	}

	/**
	 * 查询民宿客房VO列表
	 * @param wrapper 查询条件
	 * @return VO列表
	 */
	@Override
	public List<MinsukefangVO> listVO(QueryWrapper<MinsukefangEntity> wrapper) {
		return baseMapper.listVO(wrapper);
	}

	/**
	 * 查询单个民宿客房VO
	 * @param wrapper 查询条件
	 * @return VO对象
	 */
	@Override
	public MinsukefangVO selectVO(QueryWrapper<MinsukefangEntity> wrapper) {
		return baseMapper.selectVO(wrapper);
	}

	/**
	 * 查询民宿客房视图列表
	 * @param wrapper 查询条件
	 * @return 视图列表
	 */
	@Override
	public List<MinsukefangView> listView(QueryWrapper<MinsukefangEntity> wrapper) {
		return baseMapper.listView(wrapper);
	}

	/**
	 * 查询单个民宿客房视图
	 * @param wrapper 查询条件
	 * @return 视图对象
	 */
	@Override
	public MinsukefangView selectView(QueryWrapper<MinsukefangEntity> wrapper) {
		return baseMapper.selectView(wrapper);
	}
}